package com.zyl.factory;

/**
 * @version v1.0
 * @ProjectName: env_gather
 * @Package: com.zyl.factory
 * @ClassName: FactoryInstancePlus
 * @Description TODO(抽象工厂)
 * @Author 翟玉龙
 * @Date 2024/10/24-11:53
 */
public interface FactoryInstancePlus {

    /**
     * 根据类名实例化
     *
     * @param className 类名
     * @return 实例化类对象
     */
    Object getInstance(String className);

    /**
     * 根据类名与类型获取对应类型的对象
     * @param className 类名
     * @param tClass 类的字节码
     * @return 对应类型的对象
     */
    <T> T getInstance(String className, Class<T> tClass);

    /**
     * 懒加载方法，仅在需要时创建实例
     * @param className 类名
     * @param classPath 类路径
     * @return 实例化类对象
     */
    Object getLazyInstance(String className, String classPath);
}
